console.log("=======执行生产任务=====");
const gulp = require("gulp");
// 1 引入 gulp-less
const gulp_less = require("gulp-less");
// 1 引入自动添加浏览器前缀的插件 gulp-autoprefixer
const autoprefixer = require("gulp-autoprefixer");
// 1 引入添加指纹的插件
const rev = require("gulp-rev");
// 1 引入 修改html中的静态资源 改成 带有指纹的路径插件
const rev_collecor = require("gulp-rev-collector");
// 1 引入 删除文件
const del = require("del");
// 1 引入 es6 -> es5 插件
const babel = require("gulp-babel");
// 1 引入丑化 插件
const uglify = require("gulp-uglify");
// 1 引入文件合并的 插件
const fileInclude = require("gulp-file-include");
// 1 引入压缩 html文件的插件 
const htmlmin = require('gulp-htmlmin');

// 0 编写删除 del
gulp.task("del", () => {
  // 3 获取要删除的文件路径
  return del(["dist"]);
});

// 1 编写css任务
gulp.task("css", () => {
  return gulp
    .src("src/css/*.less")
    // 编译less 文件 
    .pipe( gulp_less({ }) )
    .pipe(autoprefixer({ browsers: ["since 2015"] }))
    .pipe(rev())
    .pipe(gulp.dest("dist/css"))
    .pipe(rev.manifest("rev-css.json"))
    .pipe(gulp.dest("src/rev/"));
});

// 2 编写js任务
gulp.task("js", () => {
  return gulp
    .src("src/js/*.js")
    .pipe(babel())
    .pipe(uglify({ mangle: { toplevel: true } }))
    .pipe(rev())
    .pipe(gulp.dest("dist/js"))
    .pipe(rev.manifest("rev-js.json"))
    .pipe(gulp.dest("src/rev/"));
});

// 3 编写html任务
gulp.task("html", () => {
  return gulp
    .src(["src/index.html","src/rev/*.json"])
    .pipe(
      fileInclude({
        prefix: "@@",
        basepath: "src/components",
        context: {
          // appname: "26大项目 1个亿"
        }
      })
    )
    .pipe(rev_collecor())
    // 压缩html标签 
    .pipe(htmlmin({ collapseWhitespace: true }))
    .pipe(gulp.dest("dist"));
});

// 4 处理第三方的插件和库
gulp.task('lib',()=>{
  return gulp.src("src/lib/**")
  .pipe(gulp.dest("dist/lib"));
});

// 00 执行默认任务
gulp.task("default", gulp.series(["del", "css", "js",'html','lib']));
